import asyncio


def callback_after_done(task_obj):
    """
    这个函数会在当test任务完成后被自动调用
    会自动将完成后的Task对象当做参数进行传递
    """
    print("---callback_after_done-1-", task_obj)
    print("---callback_after_done-2-", task_obj.done())
    print("---callback_ather_done-3-", task_obj.result())


async def test():
    print("----test----")
    return 100

async def test2():
    print("----test----")
    return 100


async def test3():
    print("----test----")
    return 100


async def test4():
    print("----test----")
    return 100


async def main():
    task = asyncio.create_task(test())
    task.add_done_callback(callback_after_done)  # 注意这个参数是函数名，不是函数名()

    # 如果有多个任务，可以用下面的方式
    tasks = [task]
    await asyncio.wait(tasks)

    # 如果只有1个任务，就可以直接用下面的方式
    # await task

    print("test1执行完毕了吗? ", task.done())
    print("test1的返回值是:", task.result())


if __name__ == '__main__':
    asyncio.run(main())
